# 第一阶段：构建
# 基础镜像
FROM docker.etoolsoft.com/go1.20.1-alpine AS builder

# 设置工作目录
WORKDIR /app 

# 复制go.mod go.sum 并下载依赖
COPY go.mod go.sum ./
RUN go env -w GOPROXY="https://goproxy.cn,direct"
RUN go mod download

# 复制源码
COPY . .

# 编译应用 --禁用CGO，静态链接
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o service ./cmd/


# 第二阶段： 运行阶段
# 使用极简镜像
FROM alpine:latest

# 设置环境变量TZ为上海时区
ENV TZ=Asia/Shanghai

# 安装CA证书，以便应用可以进行HTTPS调用（如访问外部API）
#RUN apk --no-cache add ca-certificates

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 设置工作目录
WORKDIR /app

# 从构建阶段复制编译好的二进制文件
COPY --from=builder  /app/service /app/start.sh /app/
COPY --from=builder  /app/configs  /app/

RUN mkdir -p /app/logs && chmod +x /app/start.sh

# 暴露端口
EXPOSE  8001

# 启动应用
ENTRYPOINT ["/app/start.sh"]

# 执行： docker build -f docker/Dockerfile -t my-app .